package com.yunpuvip.sachet.biz.service;

import com.yunpuvip.sachet.biz.entity.Player;
import com.yunpuvip.sachet.biz.model.params.PlayerParam;
import com.yunpuvip.sachet.biz.model.result.PlayerResult;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yunpuvip.sachet.modular.page.LayuiPageInfo;
import com.yunpuvip.sachet.modular.vo.rest.request.UserMsgVo;
import org.aspectj.apache.bcel.util.Play;
import org.springframework.web.multipart.MultipartFile;

import java.util.Date;
import java.util.List;

/**
 * <p>
 * 会员用户 服务类
 * </p>
 *
 * @author wushaohong
 * @since 2019-08-10
 */
public interface PlayerService extends IService<Player> {

    /**
     * 新增
     *
     * @author wushaohong
     * @Date 2019-08-10
     */
    void add(PlayerParam param);

    /**
     * 删除
     *
     * @author wushaohong
     * @Date 2019-08-10
     */
    void delete(PlayerParam param);

    /**
     * 更新
     *
     * @author wushaohong
     * @Date 2019-08-10
     */
    void update(PlayerParam param);

    /**
     * 查询单条数据，Specification模式
     *
     * @author wushaohong
     * @Date 2019-08-10
     */
    PlayerResult findBySpec(PlayerParam param);

    /**
     * 查询列表，Specification模式
     *
     * @author wushaohong
     * @Date 2019-08-10
     */
    List<PlayerResult> findListBySpec(PlayerParam param);

    /**
     * 查询分页数据，Specification模式
     *
     * @author wushaohong
     * @Date 2019-08-10
     */
     LayuiPageInfo findPageBySpec(PlayerParam param);

    /**
     * 个人你几点获取用户
     * @param id
     * @return
     */
     Player getPlayer(Integer id);

    /**
     * 根据手机号获取用户
     * @param phone
     * @return
     */
     Player getPlayerByPhone(String phone);

   Player playerWxLogin(String token,Integer id);

    /**
     * 用户不存在则添加，
     * 存在的就修改登录状态
     * @param phone
     */
   Player insertOrUpdateUser(String phone, String token, Date expireTime,String name);

    /**
     * 获取用户编号
     * @return
     */
    String genUserNo();

    /**
     * 退出登录
     * @param player
     * @return
     */
    boolean userLoginOut(Player player);


    /**
     * 用户修改资料
     */
    boolean updateUserMsg(UserMsgVo userMsgVo);

    /**
     * 图片上传
     */
    String uploadSingleImage(String hostPath, MultipartFile picture);

    /**
     * 用户更换号码
     * @param id
     * @param phoneNum 新号码
     */
    String changePhoneNum(Integer id,String phoneNum,String token,Date tokenExpireTime);


    /**
     * 判断是否有用户使用这个token
     * @param token
     * @return
     */

    boolean isTokenExist(String token,String phone);

    /**
     * 获取用户编号
     * @return
     */
    String getNewUserNo();

    String testEX();
}
